package epucjr.psicopuc.dominio;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;

import org.hibernate.search.annotations.ContainedIn;
import org.hibernate.search.annotations.DocumentId;
import org.hibernate.search.annotations.Field;
import org.hibernate.search.annotations.Indexed;

/************************
 * ATRIBUTOS
 ***********************/

@Entity
@Indexed
public class Deficiencia {
	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	@DocumentId
	private long idDeficiencia;
	@Field
	private String tipoDeDeficiencia;
	private String modalidadeDaDeficiencia;
	private String intensidadeDaDeficiencia;
	private String observacoes;
	
	@OneToMany(fetch = FetchType.LAZY , cascade = CascadeType.ALL)
	@JoinColumn(name="deficiencia_Dificuldade")
	private List<DificuldadeDevidoDeficienciaIntelectual> dificuldadesDevidoDeficiencia;
	private String outraModalidadeDeficiencia;
	
	@ContainedIn
	@ManyToOne	
	@JoinColumn(name="id_deficiencia", insertable=false, updatable=false)
	private Curriculo curriculo;

	/************************
	 * CONSTRUTOR
	 ***********************/
	public Deficiencia() {
		this.tipoDeDeficiencia = "";
		this.modalidadeDaDeficiencia = "";
		this.observacoes = "";
		this.dificuldadesDevidoDeficiencia = new ArrayList<DificuldadeDevidoDeficienciaIntelectual>();
	}
	

	public Deficiencia(String tipoDeDeficiencia,
			String modalidadeDaDeficiencia, String observacoes) {
		this.tipoDeDeficiencia = tipoDeDeficiencia;
		this.modalidadeDaDeficiencia = modalidadeDaDeficiencia;
		this.observacoes = observacoes;
	}

	public void adicionarDificuldadeDevidoDeficiencia(DificuldadeDevidoDeficienciaIntelectual dificuldade){
		this.dificuldadesDevidoDeficiencia.add(dificuldade);
	}

	/************************
	 * GETTERS/SETTERS
	 ***********************/


	public String getTipoDeDeficiencia() {
		return tipoDeDeficiencia;
	}
	public void setTipoDeDeficiencia(String tipoDeDeficiencia) {
		this.tipoDeDeficiencia = tipoDeDeficiencia;
	}
	public String getModalidadeDaDeficiencia() {
		return modalidadeDaDeficiencia;
	}
	public void setModalidadeDaDeficiencia(String modalidadeDaDeficiencia) {
		this.modalidadeDaDeficiencia = modalidadeDaDeficiencia;
	}
	public String getObservacoes() {
		return observacoes;
	}
	public void setObservacoes(String observacoes) {
		this.observacoes = observacoes;
	}
	public long getIdDeficiencia() {
		return idDeficiencia;
	}
	public void setIdDeficiencia(long idDeficiencia) {
		this.idDeficiencia = idDeficiencia;
	}

	public Curriculo getCurriculo() {
		return curriculo;
	}

	public void setCurriculo(Curriculo curriculo) {
		this.curriculo = curriculo;
	}


	public List<DificuldadeDevidoDeficienciaIntelectual> getDificuldadesDevidoDeficiencia() {
		return dificuldadesDevidoDeficiencia;
	}


	public void setDificuldadesDevidoDeficiencia(
			List<DificuldadeDevidoDeficienciaIntelectual> dificuldadesDevidoDeficiencia) {
		this.dificuldadesDevidoDeficiencia = dificuldadesDevidoDeficiencia;
	}


	public String getOutraModalidadeDeficiencia() {
		return outraModalidadeDeficiencia;
	}


	public void setOutraModalidadeDeficiencia(String outraModalidadeDeficiencia) {
		this.outraModalidadeDeficiencia = outraModalidadeDeficiencia;
	}


	public String getIntensidadeDaDeficiencia() {
		return intensidadeDaDeficiencia;
	}


	public void setIntensidadeDaDeficiencia(String intensidadeDaDeficiencia) {
		this.intensidadeDaDeficiencia = intensidadeDaDeficiencia;
	}
	
	
}
